' This BASIC Anywhere Machine port by Charlie Veniot
' This program exported from BASIC Anywhere Machine (Version [5.2.3].[2023.08.08.01.01]) on 2023.08.11 at 03:05 (Coordinated Universal Time)
' Based on QB64 program by b+ (a prolific programmer)
' found at https://friends-of-basic.freeforums.net/thread/257/quick-life-revisit-36-loc
_Title "Quick Conway Life" ' b+ 2023-1-15
Screen _NewImage(710, 710, 32)
DefLng A-Z
Dim g(69, 69)
Dim ng(69,69)
' 📚 BAM does not support the redim statement, so we have to manually clear the "ng" array
SUB RedimNg()
for y = 1 to 68
for x = 1 to 68
ng(x,y) = 0
next x
next y
END SUB
For y = 1 To 68 'seed g()
For x = 1 To 68
If Rnd < .33 Then g(x, y) = 1
Next
Next
DO
RedimNg()
Cls
gen = gen + 1
Print "Gen"; gen
For y = 1 To 68
For x = 1 To 68
nc = g(x - 1, y - 1) + g(x, y - 1) + g(x + 1, y - 1) + g(x - 1, y) + g(x + 1, y) + g(x - 1, y + 1) + g(x, y + 1) + g(x + 1, y + 1)
If g(x, y) Then
Line (x * 10, y * 10)-Step(10, 10), &HFFFFFFFF, BF
Line (x * 10, y * 10)-Step(10, 10), &HFF000000, B
If nc = 2 Or nc = 3 Then ng(x, y) = 1
Else
If nc = 3 Then ng(x, y) = 1
End If
Next
Next
For y = 1 To 68 'transfer ng to g and erase
For x = 1 To 68
g(x, y) = ng(x, y)
Next
Next
' ReDim ng(69, 69)
_DELAY 0.1
LOOP